package demo2;

//抽象类1(含一个抽象类方法)
 abstract class shape{
     public void fun(){
         System.out.println("抽象类中的无参成员方法");
     }
     abstract protected void drow();
     abstract protected void drowPlus();

 }
//定义一个抽象类继承抽象类1，并不重写抽象类1中的抽象方法
 abstract class shapePlus extends shape{
    @Override
    protected void drow() {
        System.out.println("yuanyuan");
    }

    abstract protected void drowPlus();
 }
 //当普通类继承上方抽象类时，要重写上方所有抽象类中的抽象方法
//所谓人在江湖飘，总要还的
 class circle extends shapePlus{
     @Override
     protected void drow() {
         System.out.println("⚪⚪⚪⚪⚪⚪⚪⚪");
     }

     @Override
      protected void drowPlus() {

     }
 }

class rectangle extends shape{
    @Override
    protected void drow() {
        System.out.println("♦♦♦♦♦♦♦♦♦♦");
    }

    @Override
    protected void drowPlus() {

    }

}


public class javaTest {
     public static void drow(shape shape){
         shape.drow();
     }

    public static void main(String[] args) {
        shape circle = new circle();
        shape rectangle = new rectangle();

        drow(circle);
        drow(rectangle);
    }
}
